Stored Procedure এবং Trigger দুটি SQL-ভিত্তিক বৈশিষ্ট্য, যা ডেটাবেজে ব্যবহৃত হয় বিভিন্ন কার্যকলাপ স্বয়ংক্রিয়ভাবে সম্পাদন করতে। এগুলি ডেটাবেজের পারফরম্যান্স উন্নত করতে এবং ডেটা ইন্টিগ্রিটি এবং সিকিউরিটি বজায় রাখতে সাহায্য করে। যদিও Stored Procedure এবং Trigger একই কাজের জন্য ব্যবহৃত হতে পারে, তাদের মধ্যে কিছু পার্থক্য রয়েছে এবং আলাদা কাজ করার জন্য তাদের ব্যবহার করা হয়।
এই টিউটোরিয়ালে আমরা Stored Procedure এবং Trigger এর মধ্যে পার্থক্য, তাদের ব্যবহার এবং উদাহরণ নিয়ে আলোচনা করব।
Stored Procedure হল SQL কোডের একটি ব্লক যা ডেটাবেজে সংরক্ষিত থাকে এবং একাধিক SQL অপারেশন সম্পাদন করতে ব্যবহৃত হয়। এটি ডেটাবেজের ভেতরে একটি লজিক্যাল ইউনিট হিসেবে কাজ করে এবং যখন প্রয়োজন হয় তখন এটি কল করা হয়। Stored Procedure-এ সাধারণত একাধিক SQL স্টেটমেন্ট থাকে, যা কোনো কাজ বা লজিক সম্পাদন করে।
CREATE PROCEDURE procedure_name (param1 datatype, param2 datatype)
BEGIN
-- SQL statements
END;
CALL procedure_name(param1, param2);
ধরা যাক, আমাদের একটি users
টেবিল রয়েছে এবং আমরা একটি Stored Procedure তৈরি করতে চাই, যা users
টেবিলে একটি নতুন ইউজার যোগ করবে।
CREATE PROCEDURE AddUser (id INT, name VARCHAR, age INT)
BEGIN
INSERT INTO users (id, name, age) VALUES (?, ?, ?);
END;
এখন, এই Stored Procedure কল করতে:
CALL AddUser(1, 'Alice', 25);
এটি users
টেবিলে একটি নতুন ইউজার যোগ করবে যার id = 1
, name = 'Alice'
, এবং age = 25
।
Trigger হল একটি বিশেষ ধরনের SQL কোড যা নির্দিষ্ট ইভেন্টের পরে স্বয়ংক্রিয়ভাবে কার্যকর হয়। Trigger সাধারণত INSERT, UPDATE, অথবা DELETE অপারেশনগুলির উপর নির্ভর করে কাজ করে। যখন কোনো নির্দিষ্ট ডেটাবেজ ইভেন্ট ঘটে, তখন Trigger স্বয়ংক্রিয়ভাবে কাজ শুরু করে।
CREATE TRIGGER trigger_name
AFTER INSERT ON table_name
FOR EACH ROW
BEGIN
-- SQL statements
END;
ধরা যাক, আমাদের users
টেবিল রয়েছে এবং আমরা এমন একটি Trigger তৈরি করতে চাই যা users
টেবিলে কোনো নতুন ইউজার ইনসার্ট হওয়ার পর একটি লগ টেবিল তৈরি করবে।
CREATE TRIGGER logNewUser
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO log (message) VALUES ('New user added: ' || NEW.name);
END;
এটি users
টেবিলে নতুন ইউজার ইনসার্ট হলে log টেবিলে একটি বার্তা যুক্ত করবে, যেখানে NEW.name
নতুন ইউজারের নাম ধারণ করবে।
বৈশিষ্ট্য | Stored Procedure | Trigger |
---|---|---|
ক্রিয়া সম্পাদন | কল করার জন্য ম্যানুয়ালি চালানো হয় | নির্দিষ্ট ইভেন্ট ঘটলে স্বয়ংক্রিয়ভাবে কার্যকর হয় |
কোড এক্সিকিউট | ডেটাবেজের সাথে যুক্ত হওয়ার পরে কল করা হয় | ডেটাবেজে ঘটিত যেকোনো পরিবর্তন বা ইভেন্ট trigger করবে |
নির্দেশনা গ্রহণ | প্যারামিটার গ্রহণ করতে পারে | প্যারামিটার গ্রহণ করতে পারে না |
ব্যবহার | একটি নির্দিষ্ট কার্যক্রম সম্পাদন করতে ব্যবহৃত হয় | ডেটাবেজে INSERT, UPDATE, DELETE অপারেশনগুলির পরে স্বয়ংক্রিয়ভাবে ব্যবহৃত হয় |
ফলাফল | রিটার্ন ভ্যালু থাকতে পারে | কোনো ফলাফল রিটার্ন করে না |
ধরা যাক, আপনি একটি sales
টেবিলের জন্য একটি Stored Procedure তৈরি করতে চান, যা নতুন বিক্রির তথ্য ইনসার্ট করবে।
CREATE PROCEDURE AddSale (sale_id INT, amount DECIMAL)
BEGIN
INSERT INTO sales (sale_id, amount) VALUES (sale_id, amount);
END;
এখন, আপনি এমন একটি Trigger তৈরি করতে চান, যা sales
টেবিলে নতুন ইনসার্ট হওয়া বিক্রির পর স্বয়ংক্রিয়ভাবে একটি লগ টেবিল তৈরি করবে।
CREATE TRIGGER logSale
AFTER INSERT ON sales
FOR EACH ROW
BEGIN
INSERT INTO sales_log (message) VALUES ('Sale added with ID: ' || NEW.sale_id);
END;
এটি sales
টেবিলে নতুন বিক্রি হওয়ার পর sales_log
টেবিলে একটি বার্তা লিখবে।
Stored Procedure এবং Trigger ডেটাবেজ অপারেশনগুলিকে আরও কার্যকরী এবং নিরাপদ করে তোলে। Stored Procedure কোড পুনঃব্যবহারযোগ্য এবং কার্যকরী হওয়ার জন্য ব্যবহৃত হয়, যেখানে Trigger স্বয়ংক্রিয়ভাবে নির্দিষ্ট ডেটাবেজ পরিবর্তন ঘটানোর পর কার্যকর হয়। এগুলির ব্যবহার ডেটাবেজের পারফরম্যান্স উন্নত করতে এবং ডেটা সুরক্ষা নিশ্চিত করতে সহায়ক।
common.read_more